package Macro;

import Debog.Debog;
import Debog.Debogueur;
import IHM.IHM;
import JSON.JSONArray;
import JSON.JSONException;
import JSON.JSONObject;
import Memento.Memento;
import Mementos.*;
import editeur.EditeurPlus;

public class MacroCreator extends Debog implements Debogueur{
	private EditeurPlus edit;
	private IHM ihm;
	
	
	public void setEditeur(EditeurPlus ed) {
		edit=ed;
	}
	public void setIHM(IHM i) {
		ihm=i;
	}
	
	protected Macro getMacro(JSONObject object) throws JSONException{
		Macro current=new Macro();
		
		JSONArray jarray=object.getJSONArray("macro");
		if (jarray!=null){
		int size=jarray.length();
		for (int i=0;i< size;i++){
			current.put(JSONToMemento(jarray.getJSONObject(i)));
		}		
		}
		return current;
	}
	private Memento JSONToMemento(JSONObject object) throws JSONException {	
		switch (object.getString("commande").charAt(0)){
				case MementoString.car_COLLER: return new memcoller(edit, ihm);
				case MementoString.car_COUPER: return new memcouper(edit,ihm);
				case MementoString.car_COPIER: return new memcopier(edit,ihm);
				case MementoString.car_EFFACER: return new memeffacer(edit,ihm);
				case MementoString.car_INSERERDATE:return new meminsererdate(edit,ihm);
				case MementoString.car_LINEPUSH:return new memlinepush(edit,ihm);
				case MementoString.car_LINEPOPALL:return new memlinepopall(edit,ihm);
				case MementoString.car_INSERER:return new meminserer(edit,ihm,object.getString("valeur"));
				case MementoString.car_SELECTIONNERTOUT:return new memselall(edit,ihm);
				case MementoString.car_FINDDOWN:return new memfinddown(edit,ihm,object.getString("valeur"));
				case MementoString.car_FINDUP:return new memfindup(edit,ihm,object.getString("valeur"));
				
				
			}
		return null ;
	}
	
}
